package collection01;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class IteratorDemo {
    public static void main(String[] args) {
        Collection<String> c = new ArrayList<>();
        c.add("one");
        c.add("#");
        c.add("two");
        c.add("#");
        c.add("three");
        c.add("#");
        c.add("four");
        c.add("#");
        c.add("five");
        System.out.println(c);//[one, #, two, #, three, #, four, #, five ]

        /*
        * 迭代器的常用方法
        * 1)boolean hasNext() ----------- 问(必要操作)
        *   询问集合是否还有"下一个"元素可供迭代
        *   注意: 迭代器默认开始位置为集合的第一个元素之前
        * 2)E next() -------------------- 问(必要操作)
        *   获取集合中"下一个"元素
        * 3)void remove() --------------- 需(选)
        *   删除next()方法所获取的元素
        * */

        Iterator<String> it = c.iterator();//获取集合C的迭代器
        while(it.hasNext()){
            String str = it.next();//向后移动一个位置并获取对应元素
            System.out.println(str);
            if ("#".equals(str)){
                // c.remove(str);//迭代器遍历过程中不允许通过集合的方式来增删元素,否则会抛出异常
                it.remove();//删除当前元素
            }
            System.out.println(c);
        }

    }
}
